package tools;

/**
 * Filter für den JFileChooser.
 * Damit kann man sich nur *.jpg, *.jpeg, *.png, *.bmp Images anzeigen lassen
 */
import java.io.File;
import javax.swing.filechooser.FileFilter;

public final class FileFilterImage extends FileFilter {

    private static FileFilterImage instance;

    private FileFilterImage() {
    }

    public synchronized static FileFilterImage getInstance() {
        if (instance == null) {
            instance = new FileFilterImage();
        }
        return instance;
    }

    @Override
    public String getDescription() {
        return "*.jpg, *.jpeg, *.png, *.bmp";
    }

    /**
     * prüft ob file ein verzeichnis oder ein image ist mit der Endung
     * -jpeg, -jpg, -png
     * @param f  file
     * @return true wenn f ein image ist mit der Endung
     * -jpeg, -jpg, -png oder ein verzeichnis
     * sonst false
     */
    @Override
    public boolean accept(File f) {
        if (f.isDirectory()) {
            return true;
        }

        String end = getEnd(f);
        if (end != null) {
            if (end.equals("jpeg")
                    || end.equals("jpg")
                    || end.equals("bmp")
                    || end.equals("png")) {
                return true;
            } else {
                return false;
            }
        }
        return false;
    }

    /**
     * gibt das format von f an
     * @param f
     * @return
     */
    public static String getEnd(File f) {
        String end = "";
        String s = f.getName();
        int i = s.lastIndexOf('.');
        if (i > 0 && i < s.length() - 1) {
            end = s.substring(i + 1).toLowerCase();
        }
        return end;
    }
}